home *** CD-ROM | disk | FTP | other *** search
- //------------------------------------------------------------------------------
- //
- // ADOBE SYSTEMS INCORPORATED
- // Copyright 2000-2002 Adobe Systems Incorporated
- // All Rights Reserved
- //
- // NOTICE: Adobe permits you to use, modify, and distribute
- // this file in accordance with the terms of the Adobe license
- // agreement accompanying it. If you have received this file
- // from a source other than Adobe, then your use, modification,
- // or distribution of it requires the prior written permission
- // of Adobe.
- //
- //------------------------------------------------------------------------------
-
-
- function checkPositionForAnchorAndA(element, version)
- {
- var parName = element.parent.tagName;
- switch (parName) {
- case "fieldset":
- case "p":
- case "strong":
- case "em":
- case "b":
- case "i":
- case "u":
- case "td":
- case "big":
- case "small":
- return 0;
- case "pre":
- if (version == "1.1")
- return c_parentWrong;
- else
- return 0;
- default:
- return c_parentWrong;
- }
- }
-
- function checkPositionForCard(element)
- {
- var parName = element.parent.tagName;
-
- if (parName != "wml")
- return c_parentWrong;
-
- var prevElt = getPreviousElementName(element);
-
- if ((prevElt == "") || (prevElt == "card") || (prevElt == "template"))
- return 0; // no errors
- else
- return c_previousWrong;
- }
-
- function checkPositionForDo(element, version)
- {
- var parName = element.parent.tagName;
-
- // do may occur anywhere in card, template,
- // fieldset, p, or pre
- switch (parName) {
- case "card":
- case "template":
- case "fieldset":
- case "p":
- return 0;
- case "pre":
- if (version == "1.1")
- return c_parentWrong;
- else
- return 0;
- default:
- return c_parentWrong;
- }
- }
-
- function checkPositionForFieldset(element)
- {
- var parName = element.parent.tagName;
- if ((parName != "fieldset") && (parName != "p"))
- return c_positionWrong;
- return 0;
- }
-
- function checkPositionForImg(element)
- {
- var parName = element.parent.tagName;
- switch (parName) {
- case "p":
- case "fieldset":
- case "anchor":
- case "a":
- case "td":
- case "em":
- case "strong":
- case "b":
- case "i":
- case "u":
- case "big":
- case "small":
- return 0;
- default:
- return c_parentWrong;
- }
- }
-
- function checkPositionForGoPrevAndRefresh(element)
- {
- var parName = element.parent.tagName;
- if ((parName != "do") && (parName != "onevent") &&
- (parName != "anchor"))
- return c_parentWrong;
-
- if ((parName == "do") || (parName == "onevent")) {
- var prevElt = getPreviousElementName(element);
- if (prevElt != "") // must be first and only
- return c_previousWrong;
- }
- return 0;
- }
-
- function checkPositionForInputAndSelect(element, version)
- {
- var parName = element.parent.tagName;
- if ((version == "1.1") && (parName != "fieldset") && (parName != "p"))
- return c_parentWrong;
- else if ((parName != "fieldset") && (parName != "p") && (parName != "pre"))
- return c_parentWrong;
- return 0;
- }
-
- function checkPositionForNoop(element)
- {
- var parName = element.parent.tagName;
- if ((parName != "do") && (parName != "onevent"))
- return c_parentWrong;
-
- var prevElt = getPreviousElementName(element);
- if (prevElt != "") // must be first and only
- return c_previousWrong;
-
- return 0;
- }
-
- function checkPositionForOnevent(element)
- {
- var parName = element.parent.tagName;
- if ((parName != "card") && (parName != "template") &&
- (parName != "option"))
- return c_parentWrong;
-
- if (parName == "card") {
- // check that it's first
- var prevElt = getPreviousElementName(element);
- if ((prevElt != "") && (prevElt != "onevent"))
- return c_previousWrong;
- }
- return 0;
- }
-
- function checkPositionForOption(element)
- {
- var parName = element.parent.tagName;
- if ((parName != "select") && (parName != "optgroup"))
- return c_parentWrong;
- // can occur anywhere inside select or optgroup
- return 0;
- }
-
- function checkPositionForOptgroup(element)
- {
- var parName = element.parent.tagName;
- if (parName != "select")
- return c_parentWrong;
- return 0;
- }
-
- function checkPositionForPostfield(element)
- {
- var parName = element.parent.tagName;
- if (parName != "go")
- return c_parentWrong;
-
- return 0; // can occur anywhere inside go
- }
-
- function checkPositionForPre(element, version)
- {
- if (version == "1.1")
- return c_versionWrong;
-
- var parName = element.parent.tagName;
- if (parName != "card")
- return c_parentWrong;
-
- // Onevent*, Timer?, (Do | P | Pre)*
- var prevElt = getPreviousElementName(element);
- switch (prevElt) {
- case "":
- case "do":
- case "p":
- case "pre":
- case "timer":
- case "onevent":
- return 0;
- default:
- return c_previousWrong;
- }
- }
-
- function checkPositionForSetvar(element)
- {
- var parName = element.parent.tagName;
- if ((parName != "go") && (parName != "prev") &&
- (parName != "refresh"))
- return c_parentWrong;
-
- // can go anywhere inside go, prev or refresh
- return 0;
- }
-
- function checkPositionForTemplate(element)
- {
- var parName = element.parent.tagName;
- var i; // misc value
-
- //parents: wml
- if (parName != "wml")
- return c_parentWrong;
-
- var prevElt = getPreviousElementName(element);
- if (prevElt == "") // first element
- return 0;
- else
- return c_previousWrong;
-
- }
-
- function checkPositionForTimer(element)
- {
- var parName = element.parent.tagName;
- if (parName != "card")
- return c_parentWrong;
-
- var prevElt = getPreviousElementName(element);
- if ((prevElt == "") || (prevElt == "onevent"))
- return 0;
- return c_previousWrong;
-
- }
-
-
- //----------------------------------------------------
- // return empty string if element is first
-
- function getPreviousElementName(theElt)
- {
- var parEl = theElt.parent;
- for (var i = 0; i < parEl.subElements.length; i++) {
- if (parEl.subElements[i] == theElt) {
- if (i == 0)
- return ""; // first element
-
- for (var j = i; j > 0; j--) {
- if (parEl.subElements[j-1].elementType != "comment")
- return parEl.subElements[j-1].tagName;
- }
- return ""; // first element
- }
- }
- return; // error returns undefined
- }